package com.hhf.rpc.feirpcspringbootstarter.annotation;

import com.hhf.rpc.core.constant.RpcConstant;
import com.hhf.rpc.core.fault.loadbalancer.LoadBalancerKey;
import com.hhf.rpc.core.fault.tolerant.TolerantStrategyKey;
import com.hhf.rpc.core.retry.RetryStrategyKey;
import com.hhf.rpc.core.serializer.SerializerKey;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * @Author hhf
 * @Date 2024/10/20
 * @Description 服务消费者,用于注入服务
 */
@Target({ElementType.FIELD})
@Retention(RetentionPolicy.RUNTIME)
public @interface RpcReference {

    /**
     * 服务接口类
     */
    Class<?> interfaceClass() default void.class;

    /**
     * 版本
     */
    String serviceVersion() default RpcConstant.DEFAULT_SERVICE_VERSION;

    /**
     * 负载均衡器
     */
    String loadBalancer() default LoadBalancerKey.ROUND_ROBIN;

    /**
     * 重试机制
     */
    String retryStrategy() default RetryStrategyKey.NO;

    /**
     * 容错策略
     */
    String tolerantStrategy() default TolerantStrategyKey.FAIL_FAST;

    /**
     * 模拟接口
     */
    boolean mock() default false;

}
